/*
 Navicat Premium Data Transfer

 Source Server         : 本地mongodb
 Source Server Type    : MongoDB
 Source Server Version : 40429 (4.4.29)
 Source Host           : localhost:27017
 Source Schema         : db_blog

 Target Server Type    : MongoDB
 Target Server Version : 40429 (4.4.29)
 File Encoding         : 65001

 Date: 26/10/2024 20:53:27
*/


// ----------------------------
// Collection structure for articles
// ----------------------------
db.getCollection("articles").drop();
db.createCollection("articles");

// ----------------------------
// Documents of articles
// ----------------------------
db.getCollection("articles").insert([ {
    _id: ObjectId("66bc4e52ce89473f90f23bc7"),
    title: "适合收藏，100个CSS优化技巧",
    cover: "/img/article-cover.jpg",
    content: "当各种框架以及复杂的 JS 知识开始充斥着我们的工作环境时。谁还能够记得，以 CSS 来构建更加良好的用户体验，也是前端的一个重要组成部分。",
    hit_num: NumberInt("230"),
    is_draft: false,
    like_num: NumberInt("3"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [
        ObjectId("66bc5886390692fa64384c49"),
        ObjectId("66c83a6e76bdb351e0c844df"),
        ObjectId("66c83a8a76bdb351e0c844f0"),
        ObjectId("66c847a558582fb0e8c52ba9")
    ],
    category: ObjectId("66c460edd66874ee49ed065e"),
    date: ISODate("2024-08-14T06:27:30.026Z"),
    __v: NumberInt("4"),
    favorite_num: 2,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c5456092e1231ef685440b"),
    title: "初学vue3, 全是黑盒子,vue3知识点汇总",
    cover: "/img/article-cover.jpg",
    content: "学习 Vue.js 应该像学习一门编程语言一样，首先要熟练掌握常用的知识，而对于不常用的内容可以简单了解一下。先对整个框架和语言有一个大致的轮廓，然后再逐步补充细节。千万不要像学习算法那样，一开始就钻牛角尖。vueAPI的风格分为: 选项式和组合式，vue2中一般用选项式, 所以文章中讲到的api一般都是组合式当我们新建一个vue项目时, 整个项目刚开始会有很多.vue, .js, .html .css文件，但真正有用的只有index.html, App.vue和一些配置文件",
    hit_num: NumberInt("12"),
    is_draft: false,
    like_num: NumberInt("0"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [
        ObjectId("66c96b8ab002e415c36e9028")
    ],
    category: ObjectId("66c460ffd66874ee49ed0676"),
    date: ISODate("2024-08-21T01:39:44.992Z"),
    __v: NumberInt("1"),
    favorite_num: 0,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c545a392e1231ef6854412"),
    title: "关于在Vue3项目中封装ECharts组件的一种思路",
    cover: "/img/article-cover.jpg",
    content: "ECharts是一个基于JavaScript的开源可视化库，以数据驱动、直观、交互丰富、可高度个性化定制为特点。它提供了丰富多样的图表类型和交互功能，可以帮助开发人员快速创建各种数据可视化图表，如折线图、柱状图、饼图、地图等。同时，ECharts还提供了多种数据交互和动画效果，使得数据可视化更加生动和有趣。",
    hit_num: NumberInt("22"),
    is_draft: false,
    like_num: NumberInt("1"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [
        ObjectId("66c96b9db002e415c36e9057"),
        ObjectId("66c96c91b002e415c36e90c3"),
        ObjectId("66c96c93b002e415c36e90d3")
    ],
    category: ObjectId("66c460ffd66874ee49ed0676"),
    date: ISODate("2024-08-21T01:40:51.207Z"),
    __v: NumberInt("3"),
    favorite_num: 1,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c545c792e1231ef6854419"),
    title: "卧槽，牛逼！vue3的组件竟然还能“暂停”渲染！",
    cover: "/img/article-cover.jpg",
    content: "上面这两种方案都有各自的缺点，不够完美。最理想的方案是将从服务端获取数据的逻辑放在子组件中，并且在获取数据的期间让子组件“暂停”一下，先不去渲染，等到数据请求完成后再第一次去渲染子组件。上面这两种方案都有各自的缺点，不够完美。最理想的方案是将从服务端获取数据的逻辑放在子组件中，并且在获取数据的期间让子组件“暂停”一下，先不去渲染，等到数据请求完成后再第一次去渲染子组件。上面这两种方案都有各自的缺点，不够完美。最理想的方案是将从服务端获取数据的逻辑放在子组件中，并且在获取数据的期间让子组件“暂停”一下，先不去渲染，等到数据请求完成后再第一次去渲染子组件。上面这两种方案都有各自的缺点，不够完美。最理想的方案是将从服务端获取数据的逻辑放在子组件中，并且在获取数据的期间让子组件“暂停”一下，先不去渲染，等到数据请求完成后再第一次去渲染子组件。",
    hit_num: NumberInt("4"),
    is_draft: false,
    like_num: NumberInt("1"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [ ],
    category: ObjectId("66c460ffd66874ee49ed0676"),
    date: ISODate("2024-08-21T01:41:27.546Z"),
    __v: NumberInt("0"),
    favorite_num: 2,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c545f892e1231ef6854420"),
    title: "Vue 项目 SEO 优化的关键",
    cover: "/img/article-cover.jpg",
    content: "SEO（Search Engine Optimization），即搜索引擎优化，是指通过优化网站的内容、结构和技术，使其在搜索引擎的自然搜索结果中获得更高的排名，从而增加网站的曝光率和流量。SEO 涉及多方面的优化措施，包括关键词研究、内容创作、技术优化、用户体验提升等，目标是让搜索引擎更容易理解和评估你的网站内容。SEO（Search Engine Optimization），即搜索引擎优化，是指通过优化网站的内容、结构和技术，使其在搜索引擎的自然搜索结果中获得更高的排名，从而增加网站的曝光率和流量。SEO 涉及多方面的优化措施，包括关键词研究、内容创作、技术优化、用户体验提升等，目标是让搜索引擎更容易理解和评估你的网站内容。",
    hit_num: NumberInt("1"),
    is_draft: false,
    like_num: NumberInt("0"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [ ],
    category: ObjectId("66c460ffd66874ee49ed0676"),
    date: ISODate("2024-08-21T01:42:16.896Z"),
    __v: NumberInt("0"),
    favorite_num: 0,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c5463992e1231ef6854427"),
    title: "太神奇了，仅使用彩色字体实现代码高亮",
    cover: "/img/article-cover.jpg",
    content: "通常情况下，我们要实现代码高亮功能，需要借助复杂的语法高亮库，例如Prism或highlight.js通常情况下，我们要实现代码高亮功能，需要借助复杂的语法高亮库，例如Prism或highlight.js通常情况下，我们要实现代码高亮功能，需要借助复杂的语法高亮库，例如Prism或highlight.js通常情况下，我们要实现代码高亮功能，需要借助复杂的语法高亮库，例如Prism或highlight.js通常情况下，我们要实现代码高亮功能，需要借助复杂的语法高亮库，例如Prism或highlight.js",
    hit_num: NumberInt("0"),
    is_draft: false,
    like_num: NumberInt("0"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [ ],
    category: ObjectId("66c460edd66874ee49ed065e"),
    date: ISODate("2024-08-21T01:43:21.678Z"),
    __v: NumberInt("0"),
    favorite_num: 0,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c5465292e1231ef685442e"),
    title: "CSS 有多少种方式可以实现网格蔓延变色效果！",
    cover: "/img/article-cover.jpg",
    content: "最近负责公司的一些代码效果优化工作，碰到了一个网格动画变色的需求，之前的开发同学觉得这个效果比较麻烦不好实现，当时是搁置下来了，现在我仔细思索之后发现实现该效果的方法有很多，而且都不需要JS的参与！故此写篇文章分享给大家～最近负责公司的一些代码效果优化工作，碰到了一个网格动画变色的需求，之前的开发同学觉得这个效果比较麻烦不好实现，当时是搁置下来了，现在我仔细思索之后发现实现该效果的方法有很多，而且都不需要JS的参与！故此写篇文章分享给大家～最近负责公司的一些代码效果优化工作，碰到了一个网格动画变色的需求，之前的开发同学觉得这个效果比较麻烦不好实现，当时是搁置下来了，现在我仔细思索之后发现实现该效果的方法有很多，而且都不需要JS的参与！故此写篇文章分享给大家～",
    hit_num: NumberInt("6"),
    is_draft: false,
    like_num: NumberInt("1"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [ ],
    category: ObjectId("66c460edd66874ee49ed065e"),
    date: ISODate("2024-08-21T01:43:46.59Z"),
    __v: NumberInt("0"),
    favorite_num: 1,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c5466892e1231ef6854435"),
    title: "CSS炫酷光晕按钮特效！",
    cover: "/img/article-cover.jpg",
    content: "如图所示，这是一个很炫酷的发光按钮特效，鼠标悬停时，按钮呈现旋转动画发光的效果，这样的动画效果可以显著提升用户体验和视觉吸引力。本文将解析如何实现这个按钮特效，基于这个动图可以分析出实现这个效果的主要功能要点：如图所示，这是一个很炫酷的发光按钮特效，鼠标悬停时，按钮呈现旋转动画发光的效果，这样的动画效果可以显著提升用户体验和视觉吸引力。本文将解析如何实现这个按钮特效，基于这个动图可以分析出实现这个效果的主要功能要点：如图所示，这是一个很炫酷的发光按钮特效，鼠标悬停时，按钮呈现旋转动画发光的效果，这样的动画效果可以显著提升用户体验和视觉吸引力。本文将解析如何实现这个按钮特效，基于这个动图可以分析出实现这个效果的主要功能要点：",
    hit_num: NumberInt("0"),
    is_draft: false,
    like_num: NumberInt("0"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [ ],
    category: ObjectId("66c460edd66874ee49ed065e"),
    date: ISODate("2024-08-21T01:44:08.322Z"),
    __v: NumberInt("0"),
    favorite_num: 0,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c5468092e1231ef685443c"),
    title: "纯CSS实现电梯导航！",
    cover: "/img/article-cover.jpg",
    content: "这种导航也被称为“电梯导航”（当然可能还有其他叫法，知道是这个交互就行）。它会随着内容的滚动而自动切换当前选中态，点击任意目录也会自动滚动到对应标题，就像这样这种导航也被称为“电梯导航”（当然可能还有其他叫法，知道是这个交互就行）。它会随着内容的滚动而自动切换当前选中态，点击任意目录也会自动滚动到对应标题，就像这样这种导航也被称为“电梯导航”（当然可能还有其他叫法，知道是这个交互就行）。它会随着内容的滚动而自动切换当前选中态，点击任意目录也会自动滚动到对应标题，就像这样这种导航也被称为“电梯导航”（当然可能还有其他叫法，知道是这个交互就行）。它会随着内容的滚动而自动切换当前选中态，点击任意目录也会自动滚动到对应标题，就像这样",
    hit_num: NumberInt("0"),
    is_draft: false,
    like_num: NumberInt("0"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [ ],
    category: ObjectId("66c460edd66874ee49ed065e"),
    date: ISODate("2024-08-21T01:44:32.019Z"),
    __v: NumberInt("0"),
    favorite_num: 0,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c546b892e1231ef6854443"),
    title: "邂逅JavaScript高级",
    cover: "/img/article-cover.jpg",
    content: "但随着时代的发展，技术的更迭，前端开始不仅局限于页面，通过JS或者TS，我们甚至可以涉足后端的领域，也就是Node以及对应的框架nest。但随着时代的发展，技术的更迭，前端开始不仅局限于页面，通过JS或者TS，我们甚至可以涉足后端的领域，也就是Node以及对应的框架nest。但随着时代的发展，技术的更迭，前端开始不仅局限于页面，通过JS或者TS，我们甚至可以涉足后端的领域，也就是Node以及对应的框架nest。但随着时代的发展，技术的更迭，前端开始不仅局限于页面，通过JS或者TS，我们甚至可以涉足后端的领域，也就是Node以及对应的框架nest。",
    hit_num: NumberInt("0"),
    is_draft: false,
    like_num: NumberInt("0"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [ ],
    category: ObjectId("66c460f2d66874ee49ed0664"),
    date: ISODate("2024-08-21T01:45:28.012Z"),
    __v: NumberInt("0"),
    favorite_num: 0,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c546e292e1231ef685444a"),
    title: "彻底理解迭代器/生成器",
    cover: "/img/article-cover.jpg",
    content: "迭代器是 JavaScript 中一种用于遍历数据集合的机制，提供了一种标准的接口，使得可以按需逐个访问集合中的元素，而不需要知道集合的内部结构迭代器是 JavaScript 中一种用于遍历数据集合的机制，提供了一种标准的接口，使得可以按需逐个访问集合中的元素，而不需要知道集合的内部结构迭代器是 JavaScript 中一种用于遍历数据集合的机制，提供了一种标准的接口，使得可以按需逐个访问集合中的元素，而不需要知道集合的内部结构迭代器是 JavaScript 中一种用于遍历数据集合的机制，提供了一种标准的接口，使得可以按需逐个访问集合中的元素，而不需要知道集合的内部结构",
    hit_num: NumberInt("1"),
    is_draft: false,
    like_num: NumberInt("0"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [ ],
    category: ObjectId("66c460f2d66874ee49ed0664"),
    date: ISODate("2024-08-21T01:46:10.156Z"),
    __v: NumberInt("0"),
    favorite_num: 0,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c5470692e1231ef6854451"),
    title: "JS类型判断的四种方法，你掌握了吗",
    cover: "/img/article-cover.jpg",
    content: "JavaScript中有七种原始数据类型和几种引用数据类型，本文将清楚地介绍四种用于类型判断的方法，分别是typeOf、instanceOf、Object.prototype.toString.call()、Array.isArray()，并介绍其使用方法和判定原理。JavaScript中有七种原始数据类型和几种引用数据类型，本文将清楚地介绍四种用于类型判断的方法，分别是typeOf、instanceOf、Object.prototype.toString.call()、Array.isArray()，并介绍其使用方法和判定原理。JavaScript中有七种原始数据类型和几种引用数据类型，本文将清楚地介绍四种用于类型判断的方法，分别是typeOf、instanceOf、Object.prototype.toString.call()、Array.isArray()，并介绍其使用方法和判定原理。",
    hit_num: NumberInt("0"),
    is_draft: false,
    like_num: NumberInt("0"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [ ],
    category: ObjectId("66c460f2d66874ee49ed0664"),
    date: ISODate("2024-08-21T01:46:46.239Z"),
    __v: NumberInt("0"),
    favorite_num: 0,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c5472592e1231ef6854458"),
    title: "正则不再难：快速掌握文本处理神器",
    cover: "/img/article-cover.jpg",
    content: "正则表达式是一种用来匹配字符串的强有力的武器，它的设计思想是用一种描述性的语言定义一个规则，凡是符合规则的字符，我们就认为它“匹配”了，否则，该字符串就是不合法的。正则表达式是一种用来匹配字符串的强有力的武器，它的设计思想是用一种描述性的语言定义一个规则，凡是符合规则的字符，我们就认为它“匹配”了，否则，该字符串就是不合法的。正则表达式是一种用来匹配字符串的强有力的武器，它的设计思想是用一种描述性的语言定义一个规则，凡是符合规则的字符，我们就认为它“匹配”了，否则，该字符串就是不合法的。正则表达式是一种用来匹配字符串的强有力的武器，它的设计思想是用一种描述性的语言定义一个规则，凡是符合规则的字符，我们就认为它“匹配”了，否则，该字符串就是不合法的。",
    hit_num: NumberInt("26"),
    is_draft: false,
    like_num: NumberInt("1"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [ ],
    category: ObjectId("66c460f2d66874ee49ed0664"),
    date: ISODate("2024-08-21T01:47:17.106Z"),
    __v: NumberInt("0"),
    favorite_num: 0,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c5475792e1231ef685445f"),
    title: "谈谈 H5 移动端适配原理",
    cover: "/img/article-cover.jpg",
    content: "H5 移动端 开发的必不可少的一个环节就是 移动端网页的适配，因为 UI 通常只会提供 大小固定的设计稿，而各种不同移动设备具有不同的页面分辨率和大小，所以适配的目的就是让一份设计稿在不同移动设备上表现出一致性。H5 移动端 开发的必不可少的一个环节就是 移动端网页的适配，因为 UI 通常只会提供 大小固定的设计稿，而各种不同移动设备具有不同的页面分辨率和大小，所以适配的目的就是让一份设计稿在不同移动设备上表现出一致性",
    hit_num: NumberInt("0"),
    is_draft: false,
    like_num: NumberInt("0"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [ ],
    category: ObjectId("66c460f7d66874ee49ed066a"),
    date: ISODate("2024-08-21T01:48:07.915Z"),
    __v: NumberInt("0"),
    favorite_num: 0,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c5477092e1231ef6854466"),
    title: "移动端H5开发常用技巧（干货满满哦！）",
    cover: "/img/article-cover.jpg",
    content: "年后第一天到公司上班，整理一些在移动端H5开发常见的问题给大家做下分享，这里很多是自己在开发过程中遇到的大坑或者遭到过吐糟的问题，希望能给大家带来或多或少的帮助，喜欢的大佬们可以给个小赞，如果有问题也可以一起讨论下。年后第一天到公司上班，整理一些在移动端H5开发常见的问题给大家做下分享，这里很多是自己在开发过程中遇到的大坑或者遭到过吐糟的问题，希望能给大家带来或多或少的帮助，喜欢的大佬们可以给个小赞，如果有问题也可以一起讨论下。年后第一天到公司上班，整理一些在移动端H5开发常见的问题给大家做下分享，这里很多是自己在开发过程中遇到的大坑或者遭到过吐糟的问题，希望能给大家带来或多或少的帮助，喜欢的大佬们可以给个小赞，如果有问题也可以一起讨论下。",
    hit_num: NumberInt("53"),
    is_draft: false,
    like_num: NumberInt("0"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [
        ObjectId("66c84cc9c16afcb35a0409fa")
    ],
    category: ObjectId("66c460f7d66874ee49ed066a"),
    date: ISODate("2024-08-21T01:48:32.85Z"),
    __v: NumberInt("1"),
    favorite_num: 1,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c5479e92e1231ef685446d"),
    title: "移动端|基础知识",
    cover: "/img/article-cover.jpg",
    content: "pc端常见游览器360游览器谷歌游览器火狐游览器q游览器百度游览器搜狗游览器IE游览器",
    hit_num: NumberInt("7"),
    is_draft: false,
    like_num: NumberInt("0"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [ ],
    category: ObjectId("66c460f7d66874ee49ed066a"),
    date: ISODate("2024-08-21T01:49:18.289Z"),
    __v: NumberInt("0"),
    favorite_num: 0,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c547b392e1231ef6854474"),
    title: "2024年移动端技术探索",
    cover: "/img/article-cover.jpg",
    content: "023年号称AI元年，AI带来了一些不是很清晰的机会，没有看到有多好的落地，对于互联网，不止技术层面没有突破，业务层面的需求也断崖式下滑，没有创新就没有需求，老业务的修修补补也带不来多少需求。以音视频行业为例，业界很有影响力的LiveVideoStack也停止了商务活动，音视频大会也不再开了。一切都在朝着萎缩的方向发展。裁员已经不是什么新闻，不是不裁了，是大家习惯了。",
    hit_num: NumberInt("9"),
    is_draft: false,
    like_num: NumberInt("2"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [ ],
    category: ObjectId("66c460f7d66874ee49ed066a"),
    date: ISODate("2024-08-21T01:49:39.194Z"),
    __v: NumberInt("0"),
    favorite_num: 2,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c547f492e1231ef685447b"),
    title: "如何更新NodeJs到最新版本？",
    cover: "/img/article-cover.jpg",
    content: "NodeJS更新迭代还是很频繁的，昨天在准备复习Vue3，根据官网示例新建一个Vue3的工程项目，项目内执行命令 npm init vue@latest，预期是这一指令将会安装并执行 create-vue，它是 Vue 官方的项目脚手架工具NodeJS更新迭代还是很频繁的，昨天在准备复习Vue3，根据官网示例新建一个Vue3的工程项目，项目内执行命令 npm init vue@latest，预期是这一指令将会安装并执行 create-vue，它是 Vue 官方的项目脚手架工具",
    hit_num: NumberInt("4"),
    is_draft: false,
    like_num: NumberInt("1"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [ ],
    category: ObjectId("66c460fbd66874ee49ed0670"),
    date: ISODate("2024-08-21T01:50:44.37Z"),
    __v: NumberInt("0"),
    favorite_num: 1,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c5481392e1231ef6854482"),
    title: "前端需要去了解的nodejs知识",
    cover: "/img/article-cover.jpg",
    content: "无论是前端开发还是后台开发个人认为都不应该局限于自己所在的领域，多去突破舒适圈才能有所提升，孰虽然能生巧，但我们也要知道学而不思则惘，所以了解下和前端关联最深的服务端知识很有必要，而nodejs的出现可以说是使得前端开发去了解后台有了更为快捷的路径。以下是自己以前端的角度去学习nodejs的一些经验。",
    hit_num: NumberInt("11"),
    is_draft: false,
    like_num: NumberInt("0"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [ ],
    category: ObjectId("66c460fbd66874ee49ed0670"),
    date: ISODate("2024-08-21T01:51:15.524Z"),
    __v: NumberInt("0"),
    favorite_num: 0,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66c5482d92e1231ef6854489"),
    title: "Nodejs的模块化",
    cover: "/cover/1_1724752690241.jpg",
    content: "<p>Nodejs的模块化由于出现的较早，因此它遵循的是CommonJS规范，而非ES6的模块化。Nodejs的模块化由于出现的较早，因此它遵循的是CommonJS规范，而非ES6的模块化。Nodejs的模块化由于出现的较早，因此它遵循的是CommonJS规范，而非ES6的模块化。！！</p>",
    hit_num: NumberInt("57"),
    is_draft: false,
    like_num: NumberInt("1"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [ ],
    category: ObjectId("66c460fbd66874ee49ed0670"),
    date: ISODate("2024-08-21T01:51:41.217Z"),
    __v: NumberInt("0"),
    favorite_num: 0,
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66cd7ea8c7caa4e1956d8607"),
    title: "如何终止一个正在进行中的异步操作",
    cover: "/cover/2_1724751231007.jpg",
    content: "<p>在现代 Web 开发中，处理异步操作是不可避免的。无论是通过 fetch API 进行网络请求，还是使用 setTimeout 进行延迟操作，异步操作都在我们的代码中扮演着重要角色。然而，有时我们需要在特定条件下终止这些异步操作。AbortController 是一个非常有用的工具，它可以帮助我们优雅地终止异步操作。<br>在现代 Web 开发中，处理异步操作是不可避免的。无论是通过 fetch API 进行网络请求，还是使用 setTimeout 进行延迟操作，异步操作都在我们的代码中扮演着重要角色。然而，有时我们需要在特定条件下终止这些异步操作。AbortController 是一个非常有用的工具，它可以帮助我们优雅地终止异步操作。<br>在现代 Web 开发中，处理异步操作是不可避免的。无论是通过 fetch API 进行网络请求，还是使用 setTimeout 进行延迟操作，异步操作都在我们的代码中扮演着重要角色。然而，有时我们需要在特定条件下终止这些异步操作。AbortController 是一个非常有用的工具，它可以帮助我们优雅地终止异步操作。<br>在现代 Web 开发中，处理异步操作是不可避免的。无论是通过 fetch API 进行网络请求，还是使用 setTimeout 进行延迟操作，异步操作都在我们的代码中扮演着重要角色。然而，有时我们需要在特定条件下终止这些异步操作。AbortController 是一个非常有用的工具，它可以帮助我们优雅地终止异步操作！！！<br></p><p><br></p>",
    hit_num: NumberInt("39"),
    is_draft: true,
    favorite_num: NumberInt("1"),
    like_num: NumberInt("1"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [ ],
    category: ObjectId("66c460edd66874ee49ed065e"),
    date: ISODate("2024-08-27T07:22:16.533Z"),
    __v: NumberInt("0"),
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66ceeda9a1c2ebc694da4a4f"),
    title: "可视化大屏开发，知道这三个适配方案，效率翻倍！！",
    cover: "/cover/1_1724837587086.jpg",
    content: "<p style=\"text-align: start;\">开发过<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>大屏可视化</code></span>应用的前端工程师们通常会有这样的共识：</p><p style=\"text-align: start;\">在可视化开发过程中，最具有挑战性的并非<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>各种图表</code></span>的配置与<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>效果展示</code></span>，而是如何确保<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>大屏</code></span>在<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>不同尺寸</code></span>的屏幕上都能实现良好的适配</p><p style=\"text-align: start;\">开发过<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>大屏可视化</code></span>应用的前端工程师们通常会有这样的共识：</p><p style=\"text-align: start;\">在可视化开发过程中，最具有挑战性的并非<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>各种图表</code></span>的配置与<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>效果展示</code></span>，而是如何确保<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>大屏</code></span>在<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>不同尺寸</code></span>的屏幕上都能实现良好的适配</p><p style=\"text-align: start;\">开发过<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>大屏可视化</code></span>应用的前端工程师们通常会有这样的共识：</p><p style=\"text-align: start;\">在可视化开发过程中，最具有挑战性的并非<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>各种图表</code></span>的配置与<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>效果展示</code></span>，而是如何确保<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>大屏</code></span>在<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>不同尺寸</code></span>的屏幕上都能实现良好的适配</p><p style=\"text-align: start;\">开发过<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>大屏可视化</code></span>应用的前端工程师们通常会有这样的共识：</p><p style=\"text-align: start;\">在可视化开发过程中，最具有挑战性的并非<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>各种图表</code></span>的配置与<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>效果展示</code></span>，而是如何确保<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>大屏</code></span>在<span style=\"color: rgb(255, 80, 44); background-color: rgb(255, 245, 245);\"><code>不同尺寸</code></span>的屏幕上都能实现良好的适配</p>",
    hit_num: NumberInt("48"),
    is_draft: false,
    favorite_num: NumberInt("1"),
    like_num: NumberInt("1"),
    author: ObjectId("66b58a77eb8abaf76981cdbf"),
    comments: [ ],
    category: ObjectId("66c460f7d66874ee49ed066a"),
    date: ISODate("2024-08-28T09:28:09.141Z"),
    __v: NumberInt("0"),
    is_markdown: false
} ]);
db.getCollection("articles").insert([ {
    _id: ObjectId("66dbeba0f87779cdb4e5be83"),
    title: "md文章演示",
    cover: "/img/article-cover.jpg",
    content: "## 标题\n- 列表1\n- 列表2\n- 列表3\n\n![Snipaste_2024-09-06_13-36-45.jpg](http://localhost:3000/article/Snipaste_2024-09-06_13-36-45_1725701555177.jpg \"Snipaste_2024-09-06_13-36-45.jpg\")",
    hit_num: NumberInt("104"),
    is_draft: false,
    favorite_num: NumberInt("1"),
    like_num: NumberInt("1"),
    author: ObjectId("66b57e1ac8038cee25ee21c6"),
    comments: [
        ObjectId("66dbf35820b42f5d34fcc763")
    ],
    category: ObjectId("66c460edd66874ee49ed065e"),
    date: ISODate("2024-09-07T05:58:56.644Z"),
    __v: NumberInt("1"),
    is_markdown: true
} ]);

// ----------------------------
// Collection structure for categories
// ----------------------------
db.getCollection("categories").drop();
db.createCollection("categories");
db.getCollection("categories").createIndex({
    name: NumberInt("1")
}, {
    name: "name_1",
    background: true,
    unique: true
});
db.getCollection("categories").createIndex({
    aids: NumberInt("1")
}, {
    name: "aids_1",
    background: true
});
db.getCollection("categories").createIndex({
    icon_name: NumberInt("1")
}, {
    name: "icon_name_1",
    background: true,
    unique: true
});

// ----------------------------
// Documents of categories
// ----------------------------
db.getCollection("categories").insert([ {
    _id: ObjectId("66c460edd66874ee49ed065e"),
    name: "HTMLCSS",
    aids: [
        ObjectId("66c5463992e1231ef6854427"),
        ObjectId("66c5465292e1231ef685442e"),
        ObjectId("66c5466892e1231ef6854435"),
        ObjectId("66c5468092e1231ef685443c"),
        ObjectId("66cd7aca3eae4e7536b5851d"),
        ObjectId("66dbeba0f87779cdb4e5be83")
    ],
    date: ISODate("2024-08-20T09:25:01.301Z"),
    __v: NumberInt("18"),
    icon_name: "icon-htmlcss"
} ]);
db.getCollection("categories").insert([ {
    _id: ObjectId("66c460f2d66874ee49ed0664"),
    name: "javascript",
    aids: [
        ObjectId("66c546b892e1231ef6854443"),
        ObjectId("66c546e292e1231ef685444a"),
        ObjectId("66c5470692e1231ef6854451"),
        ObjectId("66c5472592e1231ef6854458"),
        ObjectId("66cd7de13eae4e7536b58579"),
        ObjectId("66cd7ea8c7caa4e1956d8607")
    ],
    date: ISODate("2024-08-20T09:25:06.81Z"),
    __v: NumberInt("8"),
    icon_name: "icon-js"
} ]);
db.getCollection("categories").insert([ {
    _id: ObjectId("66c460f7d66874ee49ed066a"),
    name: "移动端开发",
    aids: [
        ObjectId("66c5475792e1231ef685445f"),
        ObjectId("66c5477092e1231ef6854466"),
        ObjectId("66c5479e92e1231ef685446d"),
        ObjectId("66c547b392e1231ef6854474"),
        ObjectId("66ceeda9a1c2ebc694da4a4f")
    ],
    date: ISODate("2024-08-20T09:25:11.303Z"),
    __v: NumberInt("11"),
    icon_name: "icon-yidongduan"
} ]);
db.getCollection("categories").insert([ {
    _id: ObjectId("66c460fbd66874ee49ed0670"),
    name: "nodejs",
    aids: [
        ObjectId("66c547f492e1231ef685447b"),
        ObjectId("66c5481392e1231ef6854482"),
        ObjectId("66c5482d92e1231ef6854489")
    ],
    date: ISODate("2024-08-20T09:25:15.529Z"),
    __v: NumberInt("3"),
    icon_name: "icon-nodejs--color"
} ]);
db.getCollection("categories").insert([ {
    _id: ObjectId("66c460ffd66874ee49ed0676"),
    name: "vue",
    aids: [
        ObjectId("66c5456092e1231ef685440b"),
        ObjectId("66c545a392e1231ef6854412"),
        ObjectId("66c545c792e1231ef6854419"),
        ObjectId("66c545f892e1231ef6854420")
    ],
    date: ISODate("2024-08-20T09:25:19.961Z"),
    __v: NumberInt("4"),
    icon_name: "icon-logo-vue"
} ]);

// ----------------------------
// Collection structure for comments
// ----------------------------
db.getCollection("comments").drop();
db.createCollection("comments");

// ----------------------------
// Documents of comments
// ----------------------------
db.getCollection("comments").insert([ {
    _id: ObjectId("66c83a6e76bdb351e0c844df"),
    content: "不错",
    uid: ObjectId("66b58a77eb8abaf76981cdbf"),
    aid: ObjectId("66bc4e52ce89473f90f23bc7"),
    date: ISODate("2024-08-23T07:29:50.68Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("comments").insert([ {
    _id: ObjectId("66c83a8a76bdb351e0c844f0"),
    content: "111111",
    uid: ObjectId("66b58a77eb8abaf76981cdbf"),
    aid: ObjectId("66bc4e52ce89473f90f23bc7"),
    date: ISODate("2024-08-23T07:30:18.168Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("comments").insert([ {
    _id: ObjectId("66c847a558582fb0e8c52ba9"),
    content: "hello",
    uid: ObjectId("66b58a77eb8abaf76981cdbf"),
    aid: ObjectId("66bc4e52ce89473f90f23bc7"),
    date: ISODate("2024-08-23T08:26:13.902Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("comments").insert([ {
    _id: ObjectId("66c84cc9c16afcb35a0409fa"),
    content: "评论",
    uid: ObjectId("66b58a77eb8abaf76981cdbf"),
    aid: ObjectId("66c5477092e1231ef6854466"),
    date: ISODate("2024-08-23T08:48:09.309Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("comments").insert([ {
    _id: ObjectId("66c96c91b002e415c36e90c3"),
    content: "333",
    uid: ObjectId("66b58a77eb8abaf76981cdbf"),
    aid: ObjectId("66c545a392e1231ef6854412"),
    date: ISODate("2024-08-24T05:16:01.304Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("comments").insert([ {
    _id: ObjectId("66c96c93b002e415c36e90d3"),
    content: "444",
    uid: ObjectId("66b58a77eb8abaf76981cdbf"),
    aid: ObjectId("66c545a392e1231ef6854412"),
    date: ISODate("2024-08-24T05:16:03.936Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("comments").insert([ {
    _id: ObjectId("66dbf35820b42f5d34fcc763"),
    content: "1111",
    uid: ObjectId("66b57e1ac8038cee25ee21c6"),
    aid: ObjectId("66dbeba0f87779cdb4e5be83"),
    date: ISODate("2024-09-07T06:31:52.817Z"),
    __v: NumberInt("0")
} ]);

// ----------------------------
// Collection structure for favorites
// ----------------------------
db.getCollection("favorites").drop();
db.createCollection("favorites");

// ----------------------------
// Documents of favorites
// ----------------------------
db.getCollection("favorites").insert([ {
    _id: ObjectId("66c7081ff380ad452be3e11c"),
    userId: ObjectId("66b6d76a4afda329f1541543"),
    articleId: ObjectId("66c545a392e1231ef6854412"),
    createdAt: ISODate("2024-08-22T09:42:55.742Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("favorites").insert([ {
    _id: ObjectId("66c70836f380ad452be3e14a"),
    userId: ObjectId("66b6d76a4afda329f1541543"),
    articleId: ObjectId("66bc4e52ce89473f90f23bc7"),
    createdAt: ISODate("2024-08-22T09:43:18.627Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("favorites").insert([ {
    _id: ObjectId("66c70a39f380ad452be3e1f0"),
    userId: ObjectId("66b58a77eb8abaf76981cdbf"),
    articleId: ObjectId("66c545c792e1231ef6854419"),
    createdAt: ISODate("2024-08-22T09:51:53.446Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("favorites").insert([ {
    _id: ObjectId("66c70b75f380ad452be3e2a0"),
    userId: ObjectId("66b58a77eb8abaf76981cdbf"),
    articleId: ObjectId("66c5465292e1231ef685442e"),
    createdAt: ISODate("2024-08-22T09:57:09.985Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("favorites").insert([ {
    _id: ObjectId("66c70b80f380ad452be3e2ba"),
    userId: ObjectId("66b58a77eb8abaf76981cdbf"),
    articleId: ObjectId("66c547b392e1231ef6854474"),
    createdAt: ISODate("2024-08-22T09:57:20.908Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("favorites").insert([ {
    _id: ObjectId("66c84ccfc16afcb35a040a0a"),
    userId: ObjectId("66b58a77eb8abaf76981cdbf"),
    articleId: ObjectId("66c5477092e1231ef6854466"),
    createdAt: ISODate("2024-08-23T08:48:15.236Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("favorites").insert([ {
    _id: ObjectId("66cc129673e2c4f61cfd53ad"),
    userId: ObjectId("66b58a77eb8abaf76981cdbf"),
    articleId: ObjectId("66bc4e52ce89473f90f23bc7"),
    createdAt: ISODate("2024-08-26T05:28:54.767Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("favorites").insert([ {
    _id: ObjectId("66cd894aa4fbc56c0e40aefd"),
    userId: ObjectId("66b57e1ac8038cee25ee21c6"),
    articleId: ObjectId("66cd7ea8c7caa4e1956d8607"),
    createdAt: ISODate("2024-08-27T08:07:38.14Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("favorites").insert([ {
    _id: ObjectId("66ceef794fa818aab624fc98"),
    userId: ObjectId("66b58a77eb8abaf76981cdbf"),
    articleId: ObjectId("66c547f492e1231ef685447b"),
    createdAt: ISODate("2024-08-28T09:35:53.683Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("favorites").insert([ {
    _id: ObjectId("66d55ab4c5107a88af96458a"),
    userId: ObjectId("66b57e1ac8038cee25ee21c6"),
    articleId: ObjectId("66ceeda9a1c2ebc694da4a4f"),
    createdAt: ISODate("2024-09-02T06:27:00.794Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("favorites").insert([ {
    _id: ObjectId("66d55ac9c5107a88af9645f5"),
    userId: ObjectId("66b57e1ac8038cee25ee21c6"),
    articleId: ObjectId("66c547b392e1231ef6854474"),
    createdAt: ISODate("2024-09-02T06:27:21.723Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("favorites").insert([ {
    _id: ObjectId("66d55cf3c5107a88af96465f"),
    userId: ObjectId("66b57e1ac8038cee25ee21c6"),
    articleId: ObjectId("66c545c792e1231ef6854419"),
    createdAt: ISODate("2024-09-02T06:36:35.617Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("favorites").insert([ {
    _id: ObjectId("66e1a566cb2f188227b01313"),
    userId: ObjectId("66b57e1ac8038cee25ee21c6"),
    articleId: ObjectId("66dbeba0f87779cdb4e5be83"),
    createdAt: ISODate("2024-09-11T14:12:54.157Z"),
    __v: NumberInt("0")
} ]);

// ----------------------------
// Collection structure for follows
// ----------------------------
db.getCollection("follows").drop();
db.createCollection("follows");

// ----------------------------
// Documents of follows
// ----------------------------
db.getCollection("follows").insert([ {
    _id: ObjectId("66ceca64c45d06ec9d08dccc"),
    followerId: ObjectId("66b6d76a4afda329f1541543"),
    followeeId: ObjectId("66b58a77eb8abaf76981cdbf"),
    createdAt: ISODate("2024-08-28T06:57:40.63Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("follows").insert([ {
    _id: ObjectId("66ceca70c45d06ec9d08dd05"),
    followerId: ObjectId("66b57e1ac8038cee25ee21c6"),
    followeeId: ObjectId("66b58a77eb8abaf76981cdbf"),
    createdAt: ISODate("2024-08-28T06:57:52.109Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("follows").insert([ {
    _id: ObjectId("66cedbdfe0958f07cfd29719"),
    followerId: ObjectId("66b6d76a4afda329f1541543"),
    followeeId: ObjectId("66b57e1ac8038cee25ee21c6"),
    createdAt: ISODate("2024-08-28T08:12:15.175Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("follows").insert([ {
    _id: ObjectId("66cedca2e0958f07cfd297da"),
    followerId: ObjectId("66b58a77eb8abaf76981cdbf"),
    followeeId: ObjectId("66bc44e086285489cbc6ad3b"),
    createdAt: ISODate("2024-08-28T08:15:30.315Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("follows").insert([ {
    _id: ObjectId("66cedf4ce0958f07cfd2993a"),
    followerId: ObjectId("66bc44e086285489cbc6ad3b"),
    followeeId: ObjectId("66b57e1ac8038cee25ee21c6"),
    createdAt: ISODate("2024-08-28T08:26:52.277Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("follows").insert([ {
    _id: ObjectId("66ceef9d4fa818aab624fcfc"),
    followerId: ObjectId("66bc44e086285489cbc6ad3b"),
    followeeId: ObjectId("66b58a77eb8abaf76981cdbf"),
    createdAt: ISODate("2024-08-28T09:36:29.158Z"),
    __v: NumberInt("0")
} ]);

// ----------------------------
// Collection structure for keys
// ----------------------------
db.getCollection("keys").drop();
db.createCollection("keys");

// ----------------------------
// Documents of keys
// ----------------------------
db.getCollection("keys").insert([ {
    _id: ObjectId("671ce005f9f0593887414a76"),
    content: "-----BEGIN PUBLIC KEY-----\r\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0l0tr7em9Vpie9aVitVM\r\nW/QwVWWUMUTzeak0ZVfUpNahb+/iINFGJ6rqbmU9UMMJdea1Jdh4/Z611rXjSqmS\r\nkUKg8z2fGCq2rYF/Nk4ZjRK/CdbaZglivfWPBi+eIyBYvciHrUBInn3r2RK93+Wg\r\nwkb6pfAKEggvZMoxKBgA43nr5Ky8NJ0tmubaqpRQB96afjEtF8MIO/0jz77mKwah\r\ndPfEMQt/EFu8V147DuTLhwomdvTc0o7Mk6xaKvadgkcs4dlnBTENhJg4ovzDqyV4\r\nuT9/QIcopOXd94PqvtXv69I5PHgCptfaJH9nak7kO5GnjXeGSzW7lyDGqIsmul+P\r\noQIDAQAB\r\n-----END PUBLIC KEY-----\r\n",
    date: ISODate("2024-10-26T12:26:45.532Z"),
    __v: NumberInt("0")
} ]);

// ----------------------------
// Collection structure for likes
// ----------------------------
db.getCollection("likes").drop();
db.createCollection("likes");

// ----------------------------
// Documents of likes
// ----------------------------
db.getCollection("likes").insert([ {
    _id: ObjectId("66c7081ef380ad452be3e115"),
    userId: ObjectId("66b6d76a4afda329f1541543"),
    articleId: ObjectId("66c545a392e1231ef6854412"),
    likedAt: ISODate("2024-08-22T09:42:54.96Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("likes").insert([ {
    _id: ObjectId("66c70836f380ad452be3e143"),
    userId: ObjectId("66b6d76a4afda329f1541543"),
    articleId: ObjectId("66bc4e52ce89473f90f23bc7"),
    likedAt: ISODate("2024-08-22T09:43:18.134Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("likes").insert([ {
    _id: ObjectId("66c70a39f380ad452be3e1f7"),
    userId: ObjectId("66b58a77eb8abaf76981cdbf"),
    articleId: ObjectId("66c545c792e1231ef6854419"),
    likedAt: ISODate("2024-08-22T09:51:53.764Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("likes").insert([ {
    _id: ObjectId("66c70b71f380ad452be3e293"),
    userId: ObjectId("66b58a77eb8abaf76981cdbf"),
    articleId: ObjectId("66c5465292e1231ef685442e"),
    likedAt: ISODate("2024-08-22T09:57:05.901Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("likes").insert([ {
    _id: ObjectId("66c70b81f380ad452be3e2c1"),
    userId: ObjectId("66b58a77eb8abaf76981cdbf"),
    articleId: ObjectId("66c547b392e1231ef6854474"),
    likedAt: ISODate("2024-08-22T09:57:21.316Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("likes").insert([ {
    _id: ObjectId("66c82385e15adc7077e27b7d"),
    userId: ObjectId("66b57e1ac8038cee25ee21c6"),
    articleId: ObjectId("66bc4e52ce89473f90f23bc7"),
    likedAt: ISODate("2024-08-23T05:52:05.649Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("likes").insert([ {
    _id: ObjectId("66cc129673e2c4f61cfd53a6"),
    userId: ObjectId("66b58a77eb8abaf76981cdbf"),
    articleId: ObjectId("66bc4e52ce89473f90f23bc7"),
    likedAt: ISODate("2024-08-26T05:28:54.064Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("likes").insert([ {
    _id: ObjectId("66cd8949a4fbc56c0e40aef6"),
    userId: ObjectId("66b57e1ac8038cee25ee21c6"),
    articleId: ObjectId("66cd7ea8c7caa4e1956d8607"),
    likedAt: ISODate("2024-08-27T08:07:37.583Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("likes").insert([ {
    _id: ObjectId("66ceef794fa818aab624fc91"),
    userId: ObjectId("66b58a77eb8abaf76981cdbf"),
    articleId: ObjectId("66c547f492e1231ef685447b"),
    likedAt: ISODate("2024-08-28T09:35:53.196Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("likes").insert([ {
    _id: ObjectId("66d32e76802be6a98540300d"),
    userId: ObjectId("66b57e1ac8038cee25ee21c6"),
    articleId: ObjectId("66ceeda9a1c2ebc694da4a4f"),
    likedAt: ISODate("2024-08-31T14:53:42.294Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("likes").insert([ {
    _id: ObjectId("66def715190958e981cedf2d"),
    userId: ObjectId("66b57e1ac8038cee25ee21c6"),
    articleId: ObjectId("66c547b392e1231ef6854474"),
    likedAt: ISODate("2024-09-09T13:24:37.481Z"),
    __v: NumberInt("0")
} ]);
db.getCollection("likes").insert([ {
    _id: ObjectId("66e1a566cb2f188227b0131a"),
    userId: ObjectId("66b57e1ac8038cee25ee21c6"),
    articleId: ObjectId("66dbeba0f87779cdb4e5be83"),
    likedAt: ISODate("2024-09-11T14:12:54.884Z"),
    __v: NumberInt("0")
} ]);

// ----------------------------
// Collection structure for navicategories
// ----------------------------
db.getCollection("navicategories").drop();
db.createCollection("navicategories");
db.getCollection("navicategories").createIndex({
    name: NumberInt("1")
}, {
    name: "name_1",
    background: true,
    unique: true
});

// ----------------------------
// Documents of navicategories
// ----------------------------
db.getCollection("navicategories").insert([ {
    _id: ObjectId("66d02c7279ea402397581c02"),
    name: "开发社区",
    __v: NumberInt("0"),
    sort: 0
} ]);
db.getCollection("navicategories").insert([ {
    _id: ObjectId("66d1821ae4827f943ee5e925"),
    name: "前端框架",
    __v: NumberInt("0"),
    sort: 1
} ]);
db.getCollection("navicategories").insert([ {
    _id: ObjectId("66d5280109261a31311aabbe"),
    name: "css相关",
    __v: NumberInt("0"),
    sort: 7
} ]);
db.getCollection("navicategories").insert([ {
    _id: ObjectId("66d52aa309261a31311aac71"),
    name: "nodejs相关",
    __v: NumberInt("0"),
    sort: 6
} ]);
db.getCollection("navicategories").insert([ {
    _id: ObjectId("66d9465d703b794ac91b204f"),
    name: "IDE",
    __v: NumberInt("0"),
    sort: 8
} ]);
db.getCollection("navicategories").insert([ {
    _id: ObjectId("66d94879703b794ac91b20f4"),
    name: "构建工具",
    __v: NumberInt("0"),
    sort: 9
} ]);
db.getCollection("navicategories").insert([ {
    _id: ObjectId("66d94973703b794ac91b2150"),
    name: "vue类库",
    __v: NumberInt("0"),
    sort: NumberInt("2")
} ]);
db.getCollection("navicategories").insert([ {
    _id: ObjectId("66d953d4703b794ac91b24ec"),
    name: "包管理工具",
    __v: NumberInt("0"),
    sort: 10
} ]);
db.getCollection("navicategories").insert([ {
    _id: ObjectId("66d95523703b794ac91b2661"),
    name: "在线工具",
    __v: NumberInt("0"),
    sort: 3
} ]);
db.getCollection("navicategories").insert([ {
    _id: ObjectId("66d955e1703b794ac91b26b3"),
    name: "字体图标",
    __v: NumberInt("0"),
    sort: 11
} ]);
db.getCollection("navicategories").insert([ {
    _id: ObjectId("66d95775703b794ac91b2730"),
    name: "JS实用工具库",
    __v: NumberInt("0"),
    sort: 4
} ]);
db.getCollection("navicategories").insert([ {
    _id: ObjectId("66d97520703b794ac91b3287"),
    name: "检测/测试",
    __v: NumberInt("0"),
    sort: 5
} ]);
db.getCollection("navicategories").insert([ {
    _id: ObjectId("66d97628703b794ac91b3329"),
    name: "软件下载",
    __v: NumberInt("0"),
    sort: 12
} ]);
db.getCollection("navicategories").insert([ {
    _id: ObjectId("66d97f359279d08c4b87daf2"),
    name: "前端学习",
    sort: NumberInt("0"),
    __v: NumberInt("0")
} ]);

// ----------------------------
// Collection structure for navigations
// ----------------------------
db.getCollection("navigations").drop();
db.createCollection("navigations");

// ----------------------------
// Documents of navigations
// ----------------------------
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d164545b61256f1a324cdc"),
    navigation_link: "https://www.csdn.net/",
    navigation_name: "CSDN",
    navigation_category: ObjectId("66d02c7279ea402397581c02"),
    navigation_icon: "/navigation/iShot_2024-09-02_102039_1725243681896.jpg",
    navigation_intro: "CSDN是全球知名中文IT技术交流平台,创建于1999年,包含原创博客、精品问答、职业培训、技术论坛",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d165798c45bdb808d9c8a3"),
    navigation_link: "https://juejin.cn/",
    navigation_name: "掘金",
    navigation_category: ObjectId("66d02c7279ea402397581c02"),
    navigation_icon: "/navigation/jj_1725243494081.png",
    navigation_intro: "掘金是一个面向互联网技术开发者的内容分享平台，它提供了一个社区",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d178eee4827f943ee5e8d2"),
    navigation_link: "https://segmentfault.com/",
    navigation_name: "思否",
    navigation_category: ObjectId("66d02c7279ea402397581c02"),
    navigation_icon: "/navigation/sifou_1725003983761.png",
    navigation_intro: "SegmentFault 思否是中国专业的开发者技术社区。",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d18274e4827f943ee5e92e"),
    navigation_link: "https://cn.vuejs.org/",
    navigation_name: "vue.js",
    navigation_category: ObjectId("66d1821ae4827f943ee5e925"),
    navigation_icon: "/navigation/vue_1725006419109.png",
    navigation_intro: "Vue.js 是一个用于构建用户界面的渐进式框架",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d5223b09261a31311aaad6"),
    navigation_link: "https://www.jstips.co/",
    navigation_name: "JS Tips",
    navigation_category: ObjectId("66d02c7279ea402397581c02"),
    navigation_icon: "/navigation/jstips-favicon_1725243945628.png",
    navigation_intro: "每天推出一个JS技巧的网站",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d5238009261a31311aab19"),
    navigation_link: "https://react.docschina.org/",
    navigation_name: "React",
    navigation_category: ObjectId("66d1821ae4827f943ee5e925"),
    navigation_icon: "/navigation/react-favicon_1725244270518.png",
    navigation_intro: "用于构建用户界面的Javscript库",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d5264e09261a31311aab76"),
    navigation_link: "https://www.nuxt.com.cn/",
    navigation_name: "Nuxt3",
    navigation_category: ObjectId("66d1821ae4827f943ee5e925"),
    navigation_icon: "/navigation/iShot_2024-09-02_104251_1725244978743.jpg",
    navigation_intro: "基于 Vue.js 的轻量级、服务端渲染应用框架",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d526f109261a31311aab9b"),
    navigation_link: "https://nextjs.org/",
    navigation_name: "Next.js",
    navigation_category: ObjectId("66d1821ae4827f943ee5e925"),
    navigation_icon: "/navigation/iShot_2024-09-02_104457_1725245155017.jpg",
    navigation_intro: "一个轻量级的 React 服务端渲染应用框架",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d5287809261a31311aabd7"),
    navigation_link: "https://www.sass.hk/",
    navigation_name: "Sass",
    navigation_category: ObjectId("66d5280109261a31311aabbe"),
    navigation_icon: "/navigation/iShot_2024-09-02_105148_1725245513366.jpg",
    navigation_intro: "世界上最成熟、最稳定、最强大的专业级CSS扩展语言",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d5294409261a31311aac00"),
    navigation_link: "https://less.nodejs.cn/",
    navigation_name: "Less",
    navigation_category: ObjectId("66d5280109261a31311aabbe"),
    navigation_icon: "/navigation/iShot_2024-09-02_105317_1725245633869.jpg",
    navigation_intro: "Less 是 CSS 预处理语言",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d5298009261a31311aac29"),
    navigation_link: "https://stylus.bootcss.com/",
    navigation_name: "Stylus",
    navigation_category: ObjectId("66d5280109261a31311aabbe"),
    navigation_icon: "/navigation/iShot_2024-09-02_105333_1725245786183.jpg",
    navigation_intro: "富有表现力、动态、健壮的 CSS",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d52b1109261a31311aac83"),
    navigation_link: "https://nodejs.cn/",
    navigation_name: "Node.js",
    navigation_category: ObjectId("66d52aa309261a31311aac71"),
    navigation_icon: "/navigation/iShot_2024-09-02_110312_1725246200004.jpg",
    navigation_intro: "Node.js 中文网",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d52bd109261a31311aacc2"),
    navigation_link: "https://www.expressjs.com.cn/",
    navigation_name: "Express",
    navigation_category: ObjectId("66d52aa309261a31311aac71"),
    navigation_icon: "/navigation/iShot_2024-09-02_110608_1725246378652.jpg",
    navigation_intro: "基于 Node.js 平台，快速、开放、极简的 web 开发框架",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d52bf909261a31311aacdd"),
    navigation_link: "https://koa.bootcss.com/",
    navigation_name: "Koa",
    navigation_category: ObjectId("66d52aa309261a31311aac71"),
    navigation_icon: "/navigation/iShot_2024-09-02_110532_1725246425840.jpg",
    navigation_intro: "Koa -- 基于 Node.js 平台的下一代 web 开发框架",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d946c3703b794ac91b2063"),
    navigation_link: "https://www.jetbrains.com/webstorm/",
    navigation_name: "webstorm",
    navigation_category: ObjectId("66d9465d703b794ac91b204f"),
    navigation_icon: "/navigation/webstorm-favicon_1725515401582.png",
    navigation_intro: "WebStorm 是一款由 JetBrains 公司开发的商业化 JavaScript 开发工具",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d9475f703b794ac91b2094"),
    navigation_link: "https://www.sublimetext.com/",
    navigation_name: "Sublime",
    navigation_category: ObjectId("66d9465d703b794ac91b204f"),
    navigation_icon: "/navigation/sublime_1725515559638.jpg",
    navigation_intro: "Sublime Text 是一款轻量级、高性能的代码编辑器，支持多种编程语言，具有丰富的插件和强大的文本处理功能。",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d94829703b794ac91b20c5"),
    navigation_link: "https://code.visualstudio.com/",
    navigation_name: "vscode",
    navigation_category: ObjectId("66d9465d703b794ac91b204f"),
    navigation_icon: "/navigation/vscode_1725515790798.jpg",
    navigation_intro: "Visual Studio Code 是功能强大的免费开源代码编辑器，支持多种编程语言和框架",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d948e0703b794ac91b20fe"),
    navigation_link: "https://webpack.js.org/",
    navigation_name: "webpack",
    navigation_category: ObjectId("66d94879703b794ac91b20f4"),
    navigation_icon: "/navigation/webpack_1725515957071.jpg",
    navigation_intro: "Webpack 是模块打包器",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d9492f703b794ac91b211d"),
    navigation_link: "https://babeljs.io/",
    navigation_name: "babel",
    navigation_category: ObjectId("66d94879703b794ac91b20f4"),
    navigation_icon: "/navigation/babel-favicon_1725516035122.png",
    navigation_intro: "Babel 是 JavaScript 编译器，用于代码转换和语法树操作。",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d949d8703b794ac91b215a"),
    navigation_link: "https://element.eleme.cn/",
    navigation_name: "element-ui",
    navigation_category: ObjectId("66d94973703b794ac91b2150"),
    navigation_icon: "/navigation/elementui_1725516213367.jpg",
    navigation_intro: "Element UI 是基于 Vue 2.0 的桌面端组件库，提供丰富的组件和美观的界面。",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d94a33703b794ac91b2193"),
    navigation_link: "https://element-plus.org/zh-CN/guide/design",
    navigation_name: "element-plus",
    navigation_category: ObjectId("66d94973703b794ac91b2150"),
    navigation_icon: "/navigation/elementui_1725516320929.jpg",
    navigation_intro: "Element UI 是基于 Vue3.0 的桌面端组件库，提供丰富的组件和美观的界面。",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d94b50703b794ac91b21cc"),
    navigation_link: "https://vant-ui.github.io/vant/v2/#/zh-CN/",
    navigation_name: "vant_v2",
    navigation_category: ObjectId("66d94973703b794ac91b2150"),
    navigation_icon: "/navigation/vant_1725516599551.jpg",
    navigation_intro: "Vant 是移动端 Vue 组件库，提供轻量、可靠的 UI 组件，适用于移动端开发。  Vant 组件库有哪些核心特性？ 如何开始使用 Vant 进行移动端开发？ Vant 与其他移动端 UI 组件库相比有什么优势？",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d94b86703b794ac91b2205"),
    navigation_link: "https://vant-ui.github.io/vant/#/zh-CN/home",
    navigation_name: "vant_v4",
    navigation_category: ObjectId("66d94973703b794ac91b2150"),
    navigation_icon: "/navigation/vant_1725516665868.jpg",
    navigation_intro: "Vant 是移动端 Vue 组件库，提供轻量、可靠的 UI 组件，适用于移动端开发。",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d94c95703b794ac91b223e"),
    navigation_link: "https://nuxtjs.org.cn/",
    navigation_name: "nuxtjs",
    navigation_category: ObjectId("66d94973703b794ac91b2150"),
    navigation_icon: "/navigation/nuxt3_1725516925588.jpg",
    navigation_intro: "Nuxt.js 是基于 Vue.js 的服务端渲染框架，用于构建高性能的 Web 应用。",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d94d2a703b794ac91b2277"),
    navigation_link: "https://vuex.vuejs.org/zh/",
    navigation_name: "vuex",
    navigation_category: ObjectId("66d94973703b794ac91b2150"),
    navigation_icon: "/navigation/vuex_1725517080936.jpg",
    navigation_intro: "Vuex 是 Vue.js 的状态管理库，用于构建复杂应用的集中式存储解决方案。",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d94d96703b794ac91b22b0"),
    navigation_link: "https://www.wangeditor.com/",
    navigation_name: "wangeditor",
    navigation_category: ObjectId("66d94973703b794ac91b2150"),
    navigation_icon: "/navigation/wangeditor_1725517185567.jpg",
    navigation_intro: "WangEditor 是轻量级、简洁的 Web 富文本编辑器",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d94e41703b794ac91b22e9"),
    navigation_link: "https://router.vuejs.org/zh/",
    navigation_name: "vue-router",
    navigation_category: ObjectId("66d94973703b794ac91b2150"),
    navigation_icon: "/navigation/vue_router_1725517351540.jpg",
    navigation_intro: "Vue Router 是 Vue.js 的官方路由管理器",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d94ee6703b794ac91b235b"),
    navigation_link: "https://cnodejs.org/",
    navigation_name: "CNode",
    navigation_category: ObjectId("66d52aa309261a31311aac71"),
    navigation_icon: "/navigation/cnodejs-favicon_1725517496522.png",
    navigation_intro: "Node.js专业中文社区",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d94f81703b794ac91b2394"),
    navigation_link: "https://mongoose.nodejs.cn/",
    navigation_name: "mongoose",
    navigation_category: ObjectId("66d52aa309261a31311aac71"),
    navigation_icon: "/navigation/mongoose_1725517674447.jpg",
    navigation_intro: "Mongoose 是 MongoDB 对象模型库，用于在 Node.js 应用中简化数据模型设计和操作",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d95161703b794ac91b2401"),
    navigation_link: "https://animate.style/",
    navigation_name: "Animate",
    navigation_category: ObjectId("66d5280109261a31311aabbe"),
    navigation_icon: "/navigation/animate_1725518136970.jpg",
    navigation_intro: "Animate.css 是一个跨浏览器的 CSS 动画库，提供易于使用的动画效果",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d951c3703b794ac91b243a"),
    navigation_link: "https://www.tailwindcss.cn/",
    navigation_name: "tailwindcss",
    navigation_category: ObjectId("66d5280109261a31311aabbe"),
    navigation_icon: "/navigation/tailwindcss_1725518248511.jpg",
    navigation_intro: "Tailwind CSS 是一个实用性优先的 CSS 框架，用于快速构建自定义设计",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d952a2703b794ac91b245b"),
    navigation_link: "https://vueuse.org/",
    navigation_name: "Vueuse",
    navigation_category: ObjectId("66d94973703b794ac91b2150"),
    navigation_icon: "/navigation/vueuse_1725518471400.jpg",
    navigation_intro: "VueUse 是 Vue 3 的实用工具函数库，提供多种可组合的响应式工具",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d95302703b794ac91b2494"),
    navigation_link: "https://vitejs.cn/",
    navigation_name: "vitejs",
    navigation_category: ObjectId("66d94879703b794ac91b20f4"),
    navigation_icon: "/navigation/vite_1725518571698.jpg",
    navigation_intro: "Vite 是现代化前端构建工具，利用原生 ES 模块导入特性，提供快速的冷启动和即时模块热更新",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d953ca703b794ac91b24cd"),
    navigation_link: "https://yarn.nodejs.cn/",
    navigation_name: "Yarn",
    navigation_category: ObjectId("66d953d4703b794ac91b24ec"),
    navigation_icon: "/navigation/yarn_1725518662378.jpg",
    navigation_intro: "Yarn 是快速、可靠、安全的依赖管理工具，用于前端项目中的包管理和安装",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d95455703b794ac91b2599"),
    navigation_link: "https://www.pnpm.cn/",
    navigation_name: "Pnpm",
    navigation_category: ObjectId("66d953d4703b794ac91b24ec"),
    navigation_icon: "/navigation/pnpm_1725518912517.jpg",
    navigation_intro: "pnpm 是高效的包管理器，使用硬盘空间优化技术，支持并行安装，提升性能",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d954c5703b794ac91b25d6"),
    navigation_link: "https://www.npmjs.com/",
    navigation_name: "npmjs",
    navigation_category: ObjectId("66d953d4703b794ac91b24ec"),
    navigation_icon: "/navigation/npm_1725519022730.jpg",
    navigation_intro: "npm 是 Node.js 的包管理器，用于管理 JavaScript 项目的依赖和发布代码包",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d95588703b794ac91b266b"),
    navigation_link: "https://codepen.io/",
    navigation_name: "codepen",
    navigation_category: ObjectId("66d95523703b794ac91b2661"),
    navigation_icon: "/navigation/codepen_1725519195390.jpg",
    navigation_intro: "CodePen 是在线前端代码编辑器，支持 HTML、CSS 和 JavaScript，便于快速原型设计和代码分享",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d955ce703b794ac91b2690"),
    navigation_link: "https://caniuse.com/",
    navigation_name: "caniuse",
    navigation_category: ObjectId("66d95523703b794ac91b2661"),
    navigation_icon: "/navigation/caniuse_1725519288057.jpg",
    navigation_intro: "Web前端兼容性列表",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d9561f703b794ac91b26bd"),
    navigation_link: "https://www.iconfont.cn/",
    navigation_name: "iconfont",
    navigation_category: ObjectId("66d955e1703b794ac91b26b3"),
    navigation_icon: "/navigation/iconfont_1725519369548.jpg",
    navigation_intro: "阿里巴巴矢量图标库",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d956ad703b794ac91b26e4"),
    navigation_link: "https://www.bootcss.com/p/font-awesome/",
    navigation_name: "Font Awesome",
    navigation_category: ObjectId("66d955e1703b794ac91b26b3"),
    navigation_icon: "/navigation/font-awesome-favicon_1725519516418.png",
    navigation_intro: "完美的图标字体 只为Bootstrap设计",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d95705703b794ac91b270b"),
    navigation_link: "https://icomoon.io/",
    navigation_name: "IcoMoon",
    navigation_category: ObjectId("66d955e1703b794ac91b26b3"),
    navigation_icon: "/navigation/icomoon-favicon_1725519610562.png",
    navigation_intro: "WEB字体图标制造器",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d957c3703b794ac91b273a"),
    navigation_link: "https://jquery.com/",
    navigation_name: "Jquery",
    navigation_category: ObjectId("66d95775703b794ac91b2730"),
    navigation_icon: "/navigation/jquery_1725519791551.jpg",
    navigation_intro: "jQuery 是快速、小巧、功能丰富的 JavaScript 库，简化 HTML DOM 操作、事件处理、动画和 Ajax",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d9581c703b794ac91b2783"),
    navigation_link: "https://dayjs.fenxianglu.cn/",
    navigation_name: "Dayjs",
    navigation_category: ObjectId("66d95775703b794ac91b2730"),
    navigation_icon: "/navigation/dayjs_1725519880188.jpg",
    navigation_intro: "Day.js 是轻量级的 JavaScript 时间库，用于解析、验证、操作和显示日期和时间",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d95884703b794ac91b27cc"),
    navigation_link: "https://lodash.com/",
    navigation_name: "lodash",
    navigation_category: ObjectId("66d95775703b794ac91b2730"),
    navigation_icon: "/navigation/lodash_1725519978893.jpg",
    navigation_intro: "Lodash 是一致性、模块化、高性能的 JavaScript 实用工具库，提供各种编程辅助功能",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d958de703b794ac91b2815"),
    navigation_link: "https://mathjs.org/",
    navigation_name: "mathjs",
    navigation_category: ObjectId("66d95775703b794ac91b2730"),
    navigation_icon: "/navigation/math_1725520068757.jpg",
    navigation_intro: "一款开源的JavaScript和Node.js数学库，用于处理数字、大数、复数、单位和矩阵",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d95980703b794ac91b285e"),
    navigation_link: "https://alvarotrigo.com/fullPage/zh/",
    navigation_name: "fullPage.js",
    navigation_category: ObjectId("66d95775703b794ac91b2730"),
    navigation_icon: "/navigation/full_1725520184578.jpg",
    navigation_intro: "一款 jquery 全屏滚动插件",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d97583703b794ac91b3291"),
    navigation_link: "https://prettier.io/",
    navigation_name: "prettier",
    navigation_category: ObjectId("66d97520703b794ac91b3287"),
    navigation_icon: "/navigation/prettier_1725527395463.jpg",
    navigation_intro: "Prettier 是一个流行的代码格式化工具，支持多种语言，自动格式化代码风格",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d975e8703b794ac91b32de"),
    navigation_link: "https://eslint.nodejs.cn/",
    navigation_name: "eslint",
    navigation_category: ObjectId("66d97520703b794ac91b3287"),
    navigation_icon: "/navigation/eslint_1725527501673.jpg",
    navigation_intro: "ESLint 是一个插件化JavaScript/TypeScript代码质量和代码风格检查工具",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d97679703b794ac91b3333"),
    navigation_link: "https://www.ghxi.com/",
    navigation_name: "果核剥壳",
    navigation_category: ObjectId("66d97628703b794ac91b3329"),
    navigation_icon: "/navigation/gh_1725527628066.jpg",
    navigation_intro: "常用软件破解下载",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d976d8703b794ac91b3360"),
    navigation_link: "https://chrome.zzzmh.cn/",
    navigation_name: "极简插件",
    navigation_category: ObjectId("66d97628703b794ac91b3329"),
    navigation_icon: "/navigation/jijian_1725527758917.jpg",
    navigation_intro: "谷歌插件下载",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d97815703b794ac91b33d5"),
    navigation_link: "https://snippet-generator.app/",
    navigation_name: "snippet-generator",
    navigation_category: ObjectId("66d95523703b794ac91b2661"),
    navigation_icon: "/navigation/12_1725528054759.jpg",
    navigation_intro: "片段生成在线工具",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d978a0703b794ac91b3426"),
    navigation_link: "https://component-party.lainbo.com/",
    navigation_name: "主流框架语法对比",
    navigation_category: ObjectId("66d95523703b794ac91b2661"),
    navigation_icon: "/navigation/11_1725528210483.jpg",
    navigation_intro: "vue,react语法对比",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d97f929279d08c4b87dafc"),
    navigation_link: "https://www.runoob.com/",
    navigation_name: "菜鸟教程",
    navigation_category: ObjectId("66d97f359279d08c4b87daf2"),
    navigation_icon: "/navigation/cainiao_1725530050822.jpg",
    navigation_intro: "菜鸟教程(www.runoob.com)提供了编程的基础技术教程",
    __v: NumberInt("0")
} ]);
db.getCollection("navigations").insert([ {
    _id: ObjectId("66d980ac9279d08c4b87dbd7"),
    navigation_link: "https://www.imooc.com/",
    navigation_name: "慕课网",
    navigation_category: ObjectId("66d97f359279d08c4b87daf2"),
    navigation_icon: "/navigation/muke_1725530247803.jpg",
    navigation_intro: "慕课网是提供在线编程课程和IT技能学习的平台",
    __v: NumberInt("0")
} ]);

// ----------------------------
// Collection structure for users
// ----------------------------
db.getCollection("users").drop();
db.createCollection("users");
db.getCollection("users").createIndex({
    username: NumberInt("1")
}, {
    name: "username_1",
    background: true,
    unique: true
});
db.getCollection("users").createIndex({
    email: NumberInt("1")
}, {
    name: "email_1",
    background: true,
    unique: true
});

// ----------------------------
// Documents of users
// ----------------------------
db.getCollection("users").insert([ {
    _id: ObjectId("66b57e1ac8038cee25ee21c6"),
    username: "admin123",
    password: "DSLFLZwLhLn6ydp42OfbrhE+GxgE4f6seSB2uPi8xi9H0zsa8CY0pwKyUavtu7Xn8RmO/eWhHIPu+SIz6+aXF7BUn1nwmlSSICliEBPBbuUVrCrQIDWu0tRfZjyJsChMGw5b3x00CaBRufrwTSLTmlW71CsgaNnFtPvJ3H6gxVprMte7ak6YG9fjYxgzza6CCy04evWeryHsljcxPx5y5LtK5wYG7pIX0vATLuvXa90qQmANBk5n7XwKWU9f7wl2c/Fi0LHHpIxwksvjGxHeiV6isFCtGV5eLUggjFYxIQkDc3D7in/9koj97weWSN62Y2RYiSOZU1rB2N8AEitEQQ==",
    email: "322727211@qq.com",
    avatar: "/avatar/2_1724662523703.jpg",
    nikname: "hello1234",
    signature: "这个人很懒, 什么都没有写~~~！！！",
    roles: [
        "admin"
    ],
    createdAt: ISODate("2024-08-09T02:25:30.98Z"),
    updatedAt: ISODate("2024-08-28T09:26:02.27Z"),
    __v: NumberInt("0"),
    follow_num: 2
} ]);
db.getCollection("users").insert([ {
    _id: ObjectId("66b58a77eb8abaf76981cdbf"),
    username: "admin456",
    password: "PQ9mBCUKpM0jmxkaFQMqaQSATWJJrnBfy5kfH1dzeM6+GGmEmqZC+5kGP1GiGe3oN7gdPx5VMIEqGjSrKRnil/1zeOoNiBcWlBAqAWl1A7L4r/cuo4nYWHkd7RWTtPEDS3jGKan4IktZjrByj8auMGwgfcw19rTLl+iC8SM/vKLyW6d0efde3JvWYvUiljoWxYnxu4RQcUtJ2wkGi3fK9pLZIT91Rv9MfIRQnsDWlXoWJA8CAKndr5/Bd7WQ/52Cdv1M/nNjp+8Eb31CvhG+c3i0socZxzpCi20bVwyr78rhs0wB3AnhegskC/gzEVFBeypey9N6qsaxnKIiiLxg==",
    email: "327271@qq.com",
    avatar: "/img/avatar.png",
    nikname: "用户69207",
    signature: "这个人很懒, 什么都没有写 ^_^",
    roles: [
        "user"
    ],
    createdAt: ISODate("2024-08-09T03:18:15.91Z"),
    updatedAt: ISODate("2024-08-28T09:36:29.16Z"),
    __v: NumberInt("0"),
    follow_num: 3
} ]);
db.getCollection("users").insert([ {
    _id: ObjectId("66b6d76a4afda329f1541543"),
    username: "admin789",
    password: "r5YdAYhghzK22JKY8IhNSFYT11JmJ0rN3rRCeR3y7G6zBaFEaw4qrRtSD/12cXAIOE/p47mMV/clGliLkjdDm6rhlv8Wxq1j7W67Tq4GqirN+luJwhLwdyo60h3+1XnFiDOP6qOzmcnjOl5OVuwYSZnHiA2rjU2Iq2A74N7OnWaaU/w+bgH5AnWPqcF2eDqfzxM7LyCDJrqwGeKhbj+lEg7C0+Gcf5LT8qO7zT75sPd8S6apqT8kep3z54sKRpqgQKWMOLzHGCiXcXIO+HbGvd1fnYrfHMOTOZ31hSLJ0bqwB/yCSySLeOGX/sLsvZdusN3BKaSJhifDl0urdULw==",
    email: "371@qq.com",
    avatar: "/img/avatar.png",
    nikname: "用户95822",
    signature: "这个人很懒, 什么都没有写 ^_^",
    roles: [
        "user"
    ],
    createdAt: ISODate("2024-08-10T02:58:50.042Z"),
    updatedAt: ISODate("2024-08-10T02:58:50.042Z"),
    __v: NumberInt("0"),
    follow_num: 0
} ]);
db.getCollection("users").insert([ {
    _id: ObjectId("66bc44e086285489cbc6ad3b"),
    username: "bruce123",
    password: "mUvwx/QeChKxD2NuTbueLyZ3vrxK7Hn5OWJ+P4oGjOKva4MimzJ1G+HgNhnGp8Dw8E6NGYjZUIR712H2CPyfZ1/H+PL569SJxqru/lL/3nvqrwhnK8wblXmRvjnRu4xgi7tj4ZrWYQzOEOuOoR0fjmOdfoejjxMcBh0aSvY/IREbda+linvPSqKuH5CWRYlEXcJkbU0ISRuytIEuAaVvudb+hLfKyHhYMc4H85ILAqqYxvOlN74JeHoQgO+x5RjCqbXs8TANMkhZk2P82W6V9bk0tm14s5coCtQyZxwuqbMcE188dHFNBmYs7z2MfMAR7gpXZxg6wcXFcWddf4rA==",
    email: "axc@qq.com",
    avatar: "/img/avatar.png",
    nikname: "用户2298",
    signature: "这个人很懒, 什么都没有写 ^_^",
    roles: [
        "uder"
    ],
    createdAt: ISODate("2024-08-14T05:47:12.503Z"),
    updatedAt: ISODate("2024-08-28T08:15:30.316Z"),
    __v: NumberInt("0"),
    follow_num: 1
} ]);
db.getCollection("users").insert([ {
    _id: ObjectId("66c4601fd66874ee49ed0655"),
    username: "bruce456",
    password: "WhyvBGfW2aMby5Gknoo1QCq9iY/bjVDhWfFwMKznn4RRAUbsQSl1GfaNQMdEQSBo3rb2vn2eEEYNk2vq8mKHmB9/w4PsVIFDwrjnBGNsQNCIcHXNaI7X/yUX8b/Qxke4lrl9AA730C7huiHKafXzY4AbFx6PpIIUN6mgxObvQhwRbMYHKuKkasyGLtp09s77WWDM8M5gwVWXm0hLnS6WfX5R13TKcHK55FwjFOnCSfkSDzm2276k9+UlhioZr4CXy/qcgL08rhs2/fSCwl+N1NZPJPKLY/wR+WA3FoHLo8R5WHxJeBHihSz7DeiO22lF/4S0pLw39xs2GRUDJnlw==",
    email: "asfsdf@qq.com",
    avatar: "/img/avatar.png",
    nikname: "用户45691",
    signature: "这个人很懒, 什么都没有写 ^_^",
    roles: [
        "blacklist"
    ],
    createdAt: ISODate("2024-08-20T09:21:35.542Z"),
    updatedAt: ISODate("2024-08-20T09:21:35.542Z"),
    __v: NumberInt("0"),
    follow_num: 0
} ]);
db.getCollection("users").insert([ {
    _id: ObjectId("671ce24dfe5a6cf18502a8be"),
    username: "bruce789",
    password: "otQmYd6B1+LeJGCZv4a9cq/8kc8ihl0RUSRPtHv2hmxtHqpHk22R4KF3u2fTSWOZ2pjFKqojFFWJe/TzytAarmT/gOpxnwXANC42nQRpzHja7A6OcyrYsb66QXuQu1yoKXhOrnVeowsiCVUqwdGzZu+2arhpC6Z8bIUNFRJ/fPcd3flOYfT/JNOfSNl+V7Yy1tgC0N0JRI9rVxdjPrEdFed9Pk/tbvg9QL+4X3jtFvfS3HGXQNU+YCmmhD710HcdcHKAcYZjkJQ5nFoynpYud3ZZ7IdqIvfGU+BatiYh46WL6eCr+UmozgojuLzc0iMEbwDmA2XnPb97HeNn+ERblA==",
    email: "3967271@qq.com",
    avatar: "/img/avatar.png",
    nikname: "用户66837",
    signature: "这个人很懒, 什么都没有写 ^_^",
    follow_num: NumberInt("0"),
    roles: [
        "user"
    ],
    createdAt: ISODate("2024-10-26T12:36:29.173Z"),
    updatedAt: ISODate("2024-10-26T12:36:29.173Z"),
    __v: NumberInt("0")
} ]);
